package com.young.mongo.entity;



import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serializable;
import java.time.LocalDateTime;


@Data
//把一个java类声明为mongodb的文档，可以通过collection参数指定这个类对应的文档。
// @Document(collection="comment")可以省略，如果省略，则默认使用类名小写映射集合
@Document(collection = "comment")
// 复合索引
@CompoundIndex( def = "{'userid': 1, 'nickname': -1}")
public class Comment implements Serializable {
    //主键标识，该属性的值会自动对应mongodb的主键字段"_id"，如果该属性名就叫“id”,则该注解可以省略，否则必须写
    @Id
    private String id;
    //吐槽内容
    private String content;
    // 发布日期
    @Field("publish_time")
    private LocalDateTime publishTime;
    //发布人ID
    @Indexed
    @Field("user_id") //添加了一个单字段的索引
    private String userId;
    //昵称
    @Field("nick_name")
    private String nickname;
    //评论的日期时间
    @Field("create_time")
    private LocalDateTime createTime;
    //点赞数
    @Field("like_num")
    private Integer likeNum;
    //回复数
    @Field("reply_num")
    private Integer replyNum;
    //状态
    private String state;
    //上级ID
    @Field("parent_id")
    private String parentId;
    // 文章id
    @Field("article_id")
    private String articleId;
}